// pages/my-rescue/my-rescue.js
const { get, del } = require('../../utils/request')
const { formatDate, showSuccess, showError, showConfirm, getImageUrl } = require('../../utils/util')

Page({
  data: {
    rescueList: [],
    statusIndex: 0,
    statusList: ['全部状态', '待处理', '处理中', '已完成'],
    loading: false
  },

  onLoad() {
    this.loadRescueList()
  },

  onShow() {
    this.loadRescueList()
  },

  onPullDownRefresh() {
    this.loadRescueList(() => {
      wx.stopPullDownRefresh()
    })
  },

  // 加载救助申请列表
  loadRescueList(callback) {
    const app = getApp()
    if (!app.globalData.userInfo || !app.globalData.userInfo.id) {
      showError('请先登录')
      wx.navigateBack()
      return
    }

    this.setData({ loading: true })

    const params = {
      userId: app.globalData.userInfo.id
    }

    // 添加状态筛选
    if (this.data.statusIndex > 0) {
      params.status = this.data.statusList[this.data.statusIndex]
    }

    get('/rescue/list', params).then(res => {
      if (res && res.code === '200') {
        const rescueList = res.data || []

        // 处理数据
        rescueList.forEach(item => {
          // 格式化时间
          item.createTime = formatDate(item.createTime)
          if (item.handleTime) {
            item.handleTime = formatDate(item.handleTime)
          }

          // 处理图片
          if (item.images) {
            const images = item.images.split(',').filter(img => img.trim())
            item.imageList = images.map(img => getImageUrl(img.trim()))
          } else {
            item.imageList = []
          }
        })

        this.setData({
          rescueList
        })
      }
    }).catch(err => {
      console.error('加载救助申请列表失败:', err)
      // 如果是token过期，不显示错误提示，因为request.js已经处理了
      if (err && err.code !== '401') {
        showError('加载失败')
      }
    }).finally(() => {
      this.setData({ loading: false })
      callback && callback()
    })
  },

  // 状态筛选
  onStatusChange(e) {
    this.setData({
      statusIndex: parseInt(e.detail.value)
    })
    this.loadRescueList()
  },

  // 刷新
  onRefresh() {
    this.loadRescueList()
  },

  // 预览图片
  previewImage(e) {
    const current = e.currentTarget.dataset.current
    const urls = e.currentTarget.dataset.urls
    
    wx.previewImage({
      current,
      urls
    })
  },

  // 查看位置
  viewLocation(e) {
    const location = e.currentTarget.dataset.location
    
    // 这里可以调用地图API或者显示位置信息
    wx.showModal({
      title: '救助地点',
      content: location,
      showCancel: false,
      confirmText: '知道了'
    })
  },

  // 取消救助申请
  async cancelRescue(e) {
    const id = e.currentTarget.dataset.id
    
    try {
      await showConfirm('确定要取消这个救助申请吗？')
    } catch {
      return
    }

    del(`/rescue/${id}`).then(res => {
      showSuccess('取消成功')
      this.loadRescueList()
    }).catch(err => {
      showError(err.msg || '取消失败')
    })
  },

  // 发起救助申请
  goToRescue() {
    wx.switchTab({
      url: '/pages/rescue/rescue'
    })
  }
})
